<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>javascript继承-寄生式继承</title>
</head>

<body>
  <script>
    /**
     * 寄生式继承：创建一个用于封装继承过程的函数，该函数在内部以某种方式来增强对象
     * 
     * */
    let personModel = {
      name: '马冬梅',
      skill: ['唱歌', '跳舞']
    }

    function createObj(obj) {
      let _obj = Object.create(obj); //创建一个新对象，使用现有的对象来提供新创建的对象的__proto__
      // 以某种方式来增强这个对象
      _obj.eat = function (food) {
        console.log('吃' + food)
      }
      return _obj;
    }
    let person1 = createObj(personModel);
    let person2 = createObj(personModel);
    //名称相同，因为其原型对象都是personModel
    console.log('person1 与 person2的名字：', person1.name + '___' + person2.name);
    person2.eat('水果');
  </script>
</body>

</html>